<?php
//Ultima verificacion: 13-10-2014 ; 20-11-2014 ; 20-02-2015
class M_alumno extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener los alumnos existentes menos los borrados (-1)
	function buscar($restricciones=null){
		$consulta = $this->db->query("SELECT persona.*, alumno.idAlumno, alumno.legajo, alumno.estado AS estadoAlumno,
											(SELECT nombre FROM tipodocumento WHERE tipodocumento.idTipoDocumento=persona.idTipoDocumento AND tipodocumento.estado<>-1 LIMIT 1) AS tipoDocumento,
											DATE_FORMAT(alumno.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(alumno.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM persona, alumno
									  WHERE persona.idPersona=alumno.idPersona AND 
											persona.estado=1 AND 
											alumno.estado<>-1 $restricciones
									  ORDER BY persona.apellido ASC, persona.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos obtener los alumnos activos
	function buscarActivos($restricciones=null){
		$consulta = $this->db->query("SELECT persona.*, alumno.idAlumno, alumno.legajo, alumno.estado AS estadoAlumno,
											(SELECT nombre FROM tipodocumento WHERE tipodocumento.idTipoDocumento=persona.idTipoDocumento AND tipodocumento.estado<>-1 LIMIT 1) AS tipoDocumento,
											DATE_FORMAT(alumno.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(alumno.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM persona, alumno
									  WHERE persona.idPersona=alumno.idPersona AND 
											persona.estado=1 AND 
											alumno.estado=1 $restricciones
									  ORDER BY persona.apellido ASC, persona.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar un alumno
	function eliminar($idAlumno=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `alumno`
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `alumno`.`idAlumno` = " . $this->db->escape($idAlumno) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear un alumno
	function crear($idPersona=null, $legajo=null, $fechaIngreso=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `alumno` (`idAlumno`,`idPersona`,`legajo`,`fechaIngreso`,`estado`,`fechaCreacion`,`idCreador`) VALUES 
											   (NULL,".$this->db->escape($idPersona).",".$this->db->escape($legajo).",".$this->db->escape($fechaIngreso).",".$this->db->escape($estado).",now(),".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza en el formulario para modificar un alumno.
	function get($idAlumno=null){
		$consulta = $this->db->query("SELECT alumno.*, persona.apellido, persona.nombre, 
											(SELECT hash FROM archivo WHERE archivo.idArchivo=persona.idArchivoFoto LIMIT 1) AS hashArchivoFoto,
											DATE_FORMAT(alumno.fechaIngreso,'%d-%m-%Y') AS fechaIngresoFormateada,
											DATE_FORMAT(alumno.fechaIngreso,'%d/%m/%Y') AS fechaIngresoFormateada2
									  FROM alumno, persona
									  WHERE alumno.idPersona=persona.idPersona AND 
											alumno.estado<>-1 AND 
											persona.estado<>-1 AND 
											alumno.idAlumno=".$this->db->escape($idAlumno)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza en el formulario para modificar un alumno.
	function get2($idPersona=null){
		$consulta = $this->db->query("SELECT alumno.*, 
											DATE_FORMAT(alumno.fechaIngreso,'%d-%m-%Y') AS fechaIngresoFormateada,
											DATE_FORMAT(alumno.fechaIngreso,'%d/%m/%Y') AS fechaIngresoFormateada2
									  FROM alumno, persona
									  WHERE alumno.idPersona=persona.idPersona AND 
											alumno.estado<>-1 AND 
											persona.estado<>-1 AND 
											alumno.idPersona=".$this->db->escape($idPersona)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza al iniciar sesion para obtener los datos.
	function getActivo($idPersona=null){
		$consulta = $this->db->query("SELECT alumno.*, 
											DATE_FORMAT(alumno.fechaIngreso,'%d-%m-%Y') AS fechaIngresoFormateada,
											DATE_FORMAT(alumno.fechaIngreso,'%d/%m/%Y') AS fechaIngresoFormateada2
									  FROM alumno, persona
									  WHERE alumno.idPersona=persona.idPersona AND 
											alumno.estado=1 AND 
											persona.estado=1 AND 
											alumno.idPersona=".$this->db->escape($idPersona)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza para modificar un alumno
	function modificar($idAlumno=null, $legajo=null, $fechaIngreso=null, $estado=null){
		$consulta = $this->db->query("UPDATE `alumno` 
									 SET `legajo` = ". $this->db->escape($legajo) .",
										 `fechaIngreso` = ". $this->db->escape($fechaIngreso) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `alumno`.`idAlumno`=".$this->db->escape($idAlumno)." LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>